package cn.djb.day13;

/**
 * 输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有奇数在数组的前半部分，所有偶数在数组的后半部分。
 */
class Solution {
    /**
     * 1、双指针 一个在前  一个在后
     *
     * @param nums
     * @return
     */
    public int[] exchange(int[] nums) {

        int length = nums.length;
        int left = 0, right = length - 1;
        int[] res = new int[length];
        for (int i = 0; i < length; i++) {
            if (nums[i] % 2 == 0) {
                res[right] = nums[i];
                right--;
            } else {
                res[left] = nums[i];
                left++;
            }
        }
        return res;

    }

    /**
     * 这个思路是：使用头尾双指针 在前后比较替换
     * @param nums
     * @return
     */
    public int[] exchange2(int[] nums) {
        int i = 0, j = nums.length - 1, tmp;
        while(i < j) {
            while(i < j && (nums[i] & 1) == 1) i++;
            while(i < j && (nums[j] & 1) == 0) j--;
            tmp = nums[i];
            nums[i] = nums[j];
            nums[j] = tmp;
        }
        return nums;
    }

}